package main

import (
	"fmt"
)

/**
设计一个程序，可以录入、读取和删除房源数据.
房源数据包括房源名称，房源编号，房源价格（正整数），房源面积（浮点数），是否是首次出租（布尔类型），房源标签（新校区，进地铁，深呼吸，独立卫生间等不限）。
读取房源时通过房源编号读取信息。
 */

type House struct {
	sn string
	name string
	price int
	area float32
	isFirstRent bool
	tags string
}

type HouseManage struct {
	List map[string] House
}


var HList HouseManage

func main() {
	HList.List = make(map[string] House)
	HList.List["BJ1"] = House{"BJ1","劲松农光东里",2899,11.5,true,"学区房,紧邻地铁"}

	for {
		HList.showAll()

		var op int
		fmt.Println("欢迎来到房源管理系统,输入指令操作： 1-录入房源 2-查看房源 3-删除房源")
		fmt.Scan(&op)

		switch op {
		case 1:
			HList.recordHouse()
		case 2:
			var sn string
			fmt.Println("请输入房源编号：")
			fmt.Scan(&sn)
			HList.selectHouse(sn)
		case 3:
			var sn string
			fmt.Println("请输入房源编号：")
			fmt.Scan(&sn)
			HList.deleteHouse(sn)
		default:
			fmt.Println("操作指令无效\n")
		}

	}
}

func (m HouseManage)recordHouse() {
	var house1 House
	fmt.Println("请依次输入\n房源编号 名称 价格 面积 是否首次出租 房源标签（多个用英文逗号连接）")
	fmt.Scan(&house1.sn, &house1.name, &house1.price, &house1.area, &house1.isFirstRent, &house1.tags)
	m.List[house1.sn] = house1
	fmt.Println("录入成功\n")
}

func (m HouseManage)selectHouse(sn string) {
	houseInfo, ok := m.List[sn]
	if ok {
		var firstRent string
		if houseInfo.isFirstRent {
			firstRent = "是否首次出租：是"
		} else {
			firstRent = "是否首次出租：否"
		}
		fmt.Println("房源信息如下：")
		fmt.Printf("编号：%s\n", houseInfo.sn)
		fmt.Printf("名称：%s\n", houseInfo.name)
		fmt.Printf("价格：%d 元\n", houseInfo.price)
		fmt.Printf("面积：%0.2f 平米\n", houseInfo.area)
		fmt.Println(firstRent)
		fmt.Printf("标签：%s\n", houseInfo.tags)
		fmt.Println("----------------------------------------------------")
	} else {
		fmt.Println("房源信息不存在\n")
	}
}

func (m HouseManage) deleteHouse (sn string) {

	delete(m.List, sn)
	fmt.Println("删除成功\n")
}

func (m HouseManage) showAll()  {
	fmt.Println("当前房源：")
	for k, _:= range m.List {
		fmt.Println(k)
	}
	fmt.Println("----------------------------------------------------")
}
